package com.fcscs.ecms.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.fcscs.ecms.domain.GlobalHotelEntity;
import com.fcscs.ecms.domain.GlobalHotelRoomTypeList;
import com.fcscs.ecms.domain.GlobalLanguage;
import com.fcscs.ecms.domain.GlobalModuleInfo;
import com.fcscs.ecms.domain.GlobalModuleType.ModuleType;
import com.fcscs.ecms.domain.GlobalPicture;
import com.fcscs.ecms.domain.GlobalProprietaryInfo;
import com.fcscs.ecms.domain.GlobalRoomType;
import com.fcscs.ecms.domain.GlobalText;
import com.fcscs.ecms.domain.HotelEntityView;
import com.fcscs.ecms.domain.MdlEntertainmentDynamicField;
import com.fcscs.ecms.domain.MdlEntertainmentElmts;
import com.fcscs.ecms.domain.MdlEntertainmentMain;
import com.fcscs.ecms.domain.MdlHelpCategory;
import com.fcscs.ecms.domain.MdlHelpMain;
import com.fcscs.ecms.domain.MdlHelpMainId;
import com.fcscs.ecms.domain.ScheduleActivation;
import com.fcscs.ecms.domain.ScheduleActivationId;

@Repository
public interface ECMSCommonDao {

	List<GlobalText> getListGlobalText();

	// GlobalLanguage
	GlobalLanguage saveGlobalLanguage(GlobalLanguage entity);

	// GlobalText
	GlobalText saveGlobalText(GlobalText entity);

	// GlobalPicture
	GlobalPicture saveGlobalPicture(GlobalPicture entity);

	GlobalPicture updateGlobalPicture(GlobalPicture entity);
	
	GlobalPicture getGlobalPicture(int id);

	// This Mothed using for Hotel Entity, Hotel Room Type List
	GlobalHotelEntity saveGlobalHotelEntity(GlobalHotelEntity entity);

	GlobalHotelRoomTypeList saveGlobalHotelRoomTypeList(
			GlobalHotelRoomTypeList entity);

	// Get Roomtype
	List<GlobalRoomType> getRoomType();

	List<String> getText(int id, String langId);

	// Get hotel roomtype list
	List<Integer> getHotelRoomTypeList(int idHotel);

	List<GlobalPicture> getImage(int id);

	List<GlobalHotelEntity> getHotel(int id);

	List<GlobalHotelEntity> getHotels();

	HotelEntityView getHotelEntityView(int idHotel);

	boolean deleteHotelRoomTypeList(int idHotel, int roomType);

	boolean deleteHotel(int idHotel);
	boolean deleteGlobalPicture(GlobalPicture pictureentity);
	boolean deleteGlobalText(int id);
	
	
	// GlobalLanguage
	Map<String, String> getLanguageMap();

	// GlobalText
	Map<String, String> getGlobalTextMap(int textId);

	int saveGlobalTextMap(Map<String, String> languageTextMap);

	void updateGlobalTextMap(int id, Map<String, String> languageTextMap);

	// GlobalModuleInfo

	GlobalModuleInfo getGlobalModuleInfo(int id);

	int saveGlobalModuleInfo(GlobalModuleInfo moduleInfo);

	void updateGlobalModuleInfo(GlobalModuleInfo moduleInfo);
	
	GlobalModuleInfo getGlobalModuleInfoTemplateByName(int orgId, int propId, ModuleType type, String templateName);
	
	List<GlobalModuleInfo> getGlobalModuleInfoTemplateList(int orgId, int propId, ModuleType type);

	// GlobalProprietaryInfo
	GlobalProprietaryInfo getGlobalProprietaryInfo(int id);

	int saveGlobalProprietaryInfo(GlobalProprietaryInfo propInfo);

	void updateGlobalProprietaryInfo(GlobalProprietaryInfo propInfo);
	
	void deleteGlobalProprietaryInfo(int id);

	// MdlEntertainmentMain
	MdlEntertainmentMain getEntertainmentMain(int orgId, int propId, boolean isSchedule);
	
	MdlEntertainmentMain getEntertainmentMain(int id);

	int saveEntertainmentMain(MdlEntertainmentMain entMain);

	void updateEntertainmentMain(MdlEntertainmentMain entMain);
	
	// Module Help
	GlobalModuleInfo getHelpModuleInfo(int orgId, int propId, boolean isSchedule);

	List<MdlHelpMain> getHelpMainList(int moduleId);
	
	MdlHelpCategory getHelpCategory(int id);
	
	MdlHelpMainId saveHelpMain(MdlHelpMain helpMain);
	
	int saveHelpCategory(MdlHelpCategory helpCat);
	
	void deleteHelpMain(MdlHelpMain helpMain);
	
	void deleteHelpCategory(MdlHelpCategory helpCate);
	
	void updateHelpMain(MdlHelpMain helpMain);
	
	void updateHelpCategory(MdlHelpCategory helpCat);

	// MdlEntertainmentElmts
	List<MdlEntertainmentElmts> getEntertainmentElmtsList(int entMainId);

	// MdlEntertainmentDynamicField
	MdlEntertainmentDynamicField getEntertainmentDynamicField(int id);

	List<MdlEntertainmentDynamicField> getEntertainmentDynamicFieldList();
	
	// Schedule Activation
	void saveScheduleActivation(ScheduleActivation sche);
	
	ScheduleActivation getScheduleActivation(ScheduleActivationId scheId);
	
	ScheduleActivation getScheduleActivation(int orgId, int propId, String typeId);
	
	void updateScheduleActivation(ScheduleActivation sche);

}
